/**
 * 房间计时任务线程管理器
 * 
 */
var _scheduler = Packages.it.gotoandplay.smartfoxserver.util.scheduling;	//任务调度类

function schControler() {
	
}

schControler.prototype.taskObj = new Object;
schControler.prototype.scheduler = new _scheduler.Scheduler();	

/**
 * 开始执行任务
 */
schControler.prototype.start = function() {
	this.scheduler.startService();
}

/**
 *停止所有任务
 */
schControler.prototype.stop = function() {
	this.scheduler.stopService();
}
/**
 * 添加任务
 * @param r_taskid String     任务id
 * @param r_interval int  	  时间
 * @param r_loop Boolean      是否循环
 * @param r_callback function 回调函数
 * @param r_param  			  携带的参数,执行回调函数时会传递该参数
 */
schControler.prototype.addScheduledTask = function(r_taskid, r_interval, r_loop, r_callback, r_param,r_callObj) {			
	this.remove(r_taskid);   //移除旧任务	
	var _task = new _scheduler.Task({name:r_taskid,fun:r_callback, param:r_param, callObj:r_callObj} );	  //创建新任务
	var _call_back = { };			
	_call_back.doTask = function(task) {								
		task.id.fun.call(task.id.callObj, task.id.param);  //执行回调函数，传递参数				
		if (!r_loop) {
			task.active = false;
		}
	}
	var taskHandler = new _scheduler.ITaskHandler( _call_back );	//创建回任务调函数实例	
	this.scheduler.addScheduledTask(_task, r_interval, r_loop, taskHandler);		
	this.taskObj[r_taskid]  = _task;
}

/**
 *移除任务 
 */
schControler.prototype.remove = function(r_taskid) {	
	var _task = this.taskObj[r_taskid] ;		
	if (!_task) {
		return;			
	}	
	_task.active = false;
	//this.scheduler.removeScheduledTask(_task);
	this.taskObj[r_taskid] = null;
	delete this.taskObj[r_taskid];
}
